package org.example.cake.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.cake.entity.Discuss;

import java.util.List;

@Mapper
public interface DiscussMapper {
    int deleteByPrimaryKey(Integer discussid);

    int insert(Discuss record);

    int insertSelective(Discuss record);

    Discuss selectByPrimaryKey(Integer discussid);

    int updateByPrimaryKeySelective(Discuss record);

    int updateByPrimaryKey(Discuss record);

    /**
     * 前端方法：根据蛋糕id查询有关评论
     * @param cakeid 蛋糕id
     * @author 李丽君
     * @Date 2025-07-25
     * @return 评论实体
     */
    public List<Discuss> selectByCakeId(@Param("cakeid") Integer cakeid);

    /**
     * 小程序方法  新增评论
     * @param discuss 评论对象
     * @return  受影响的行数
     */
    public int insertDiscuss(Discuss discuss);


    /**
     * 查询所有评论及关联信息
     * @author luojiangjin
     * @return 包含评论、用户、蛋糕、图片等信息的列表
     */
    List<Discuss> selectAllDiscussWithDetails();

    /**
     * 分页查询评论列表（多表联查）
     * @author luojiangjin
     * @param keyword 搜索关键词（评论内容/用户名称/蛋糕名字）
     * @return 评论列表
     */
    List<Discuss> selectDiscussList(@Param("keyword") String keyword);

    /**
     * 根据评论ID删除评论
     * @author luojiangjin
     * @param discussId 评论ID
     * @return 影响行数
     */
    int deleteDiscussById(Integer discussId);

    /**
     * 根据评论ID查询评论图片
     * @author luojiangjin
     * @param discussId 评论ID
     * @return 图片URL列表
     */
    List<String> selectDiscussImages(Integer discussId);

    /**
     * 根据评论ID删除关联的评论图片
     * @author luojiangjin
     * @param discussId 评论ID
     * @return 影响行数
     */
    int deleteDiscussImages(Integer discussId);

    /**
     * 根据订单id查询是否有评论
     * @param orderid 订单id
     * @return 订单集合
     */
    @Select("SELECT COUNT(1) FROM discuss WHERE orderid =#{orderid}")
    boolean selectByOrderId(@Param("orderid") Integer orderid);
    @Select("SELECT * FROM discuss WHERE discussid=#{discussid} ")
    public Discuss selectById(@Param("discussid") Integer discussid);

}